Polling protocol for automatic load limiting

ABSTRACT

A client-specific or client-independent polling interval is provided to each client dynamically based on server load. The polling interval can be provided in the server polling response sent in response to a client polling request. The polling interval can be determined using a feedback control system or using a Bucket Reservation Method. The server uses a next polling interval and a flag that indicates if the previous polling request was ignored. Using these two parameters the server can continuously control the polling frequency from the client to achieve optimal performance.

CROSS-REFERENCE TO RELATED APPLICATION(S)

This application is a continuation of allowed U.S. application Ser. No.12/889,438, filed on Sep. 24, 2010, which is incorporated by referenceherein in its entirety.

BACKGROUND

The process of one computer communicating with another computer atintervals for the purpose of obtaining information or to perform anaction is referred to as polling. For example, when a device or service(a client) wants to retrieve data or perform an action on another deviceor service (a server), the client can poll the server. Polling occurs inmany different types of applications including stock price updateapplications that display current prices for stocks every so often,weather applications that update temperature every so often, and emailapplications that check for new emails every so often, to mention just afew of many possible applications.

In some polling applications, the client polls the server at some fixedinterval or the server sends updates to the client at a fixed interval.Simple optimizations of fixed interval polling can include reducingunnecessary polling. For example, a weather application may detect whena client is idle and stop sending updates until the client becomesactive again. A stock price update application may reduce pollingfrequency after the close of the trading day.

SUMMARY

To address these and other aspects of polling scenarios, pollinginterval can be repeatedly adjusted to prevent potential serveroverload, even in the event of a sudden increase in the number ofclients. Polling interval can be continuously adapted based on currentserver utilization. Polling interval can be decreased when serverutilization is lower and can be increased when server utilization ishigher. Continuous adaptation of the polling frequency can result in aincreased performance and a more favorable user experience.

Instead of using a fixed polling interval, a polling interval can bedynamically calculated based on current level of server load. The nextpolling interval can be calculated by the server and supplied to theclient by the server in the message sent to the client by the server inresponse to the polling request. Each client polling the server can besupplied with its own polling interval so that two clients that poll thesame server can have different polling rates. The polling rate for aclient can change with every response from the server. The next pollinginterval can be calculated based on one or more algorithms so that thecumulative polling request rate of all the clients approximates adesired request rate.

A polling request can include input parameters specified by the clientand sent to the server for each poll or at an interval determined by theserver. In response, the server can generate a polling response withparticular application-specific output values and return the generatedpolling response to the client. In addition to the particularapplication-specific output values, the server polling response caninclude a value that specifies how long the client is to wait beforesending the next polling request (a “schedule next request after”value). The value that specifies how long the client is to wait beforesending the next polling request can replace the fixed or configurablepolling interval to that indicated by the “schedule next request after”value for the client, thus allowing the polling interval to bedynamically adjusted for each individual client. Moreover thedynamically adjustable polling interval can be adjusted for each pollingrequest, allowing a polling interval to be tuned to current operatingconditions of the server.

In addition to including the value that specifies how long the client isto wait before sending the next polling request, the server pollingresponse can optionally include a value that indicates whether theclient polling request was ignored by the server. When the clientpolling request is ignored, other values in the polling response can bearbitrary or invalid values or can be an outdated value because theserver did not update it. The value that indicates that the clientpolling request has been ignored (the “is request ignored” value) can beused when a client disregards the “schedule next request after” value.For example, if a client ignores the “schedule next request after” valueand sends a next polling request before the time indicated by the“schedule next request after” value, the server can ignore requests fromthe client and indicate to the client that it has done so by sending the“is request ignored” value. The “is request ignored” value can be usedto handle transient responses during which a server chooses to ignorerequests such as, for example, when a feedback control system is slow toconverge.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings:

FIG. 1 illustrates an example of a system 100 for automatic loadlimiting in accordance with aspects of the subject matter disclosedherein;

FIG. 2 a is an example of pseudo code that implements aspects of thesubject matter disclosed herein;

FIG. 2 b is a flow diagram of an example of a method 200 for automaticload limiting in accordance with aspects of the subject matter disclosedherein;

FIG. 3 is a block diagram illustrating an example of a networkenvironment in which aspects of the subject matter disclosed herein maybe implemented; and

FIG. 4 is a block diagram of an example of a computing environment inaccordance with aspects of the subject matter disclosed herein.

DETAILED DESCRIPTION Overview

Sometimes, predicting the number of clients that will be polling aserver or group of servers providing a particular service, is difficultor impossible. In such an event, fixed polling intervals with or withoutoptimizations can overwhelm a server and can result in shutdown of theserver or poor performance. Fixed polling intervals can also result inunderutilization of the server when the number of polling clients islow.

Consider, for example, a weather applet that uses two servers in acluster to serve polling requests. During storms the applet may receivemany more polling requests than normal. The capacity of the servers maybe exceeded and the applet may fail, disappointing users who relied onthe applet. Similarly, an email client might check mail on servers every10 minutes, based on analysis by system administrators of peak usageperiods. Outside the peak usage periods, however, the servers might beunderutilized because the polling interval is set so that the serverswill not be overwhelmed during peak usage periods.

To address these and other aspects of polling systems, a refreshinterval is varied over time for each client accessing a server so thatthe total rate of requests made on the server by all the clients remainssubstantially constant and approaches an ideal or desired number ofrequests to fully utilize the server without overwhelming it. A nextpolling interval can be provided to each client by the server in theserver polling response.

Polling Protocol For Automatic Load Limiting

FIG. 1 illustrates an example of a system 100 for automated polling inaccordance with aspects of the subject matter disclosed herein. All orportions of system 100 may reside on one or more computers such as thecomputers described below with respect to FIG. 4. All or portions ofsystem 100 may operate in a network environment such as the onedescribed with respect to FIG. 3. System 100 or portions thereof may beprovided as a stand-alone system or as a plug-in or add-in.

System 100 may include one or more of: one or more devices 102 includinga processor (such as processor 142), a memory such as memory 144, and aserver module for automated polling 106 as described herein. Othercomponents well known in the arts may also be included but are not hereshown. It will be appreciated that the server module for automatedpolling 106 can be loaded into memory 144 to cause one or moreprocessors such as processor 142 to perform the actions attributed tothe server module for automated polling 106. Device 102 may represent aserver computer that receives requests from one or more client computersand returns results (e.g., responses to the received client request) orperforms actions requested by the client. Device 102 and 103 mayrepresent computers in a peer-to-peer network in which case devices maypoll each other and hence they are both client and server at the sametime for one another.

System 100 may include in addition to or instead of, one or more devices103 including a processor (such as processor 143), a memory such asmemory 145, and a client module for automated polling 107 as describedherein. Other components well known in the arts may also be included butare not here shown. It will be appreciated that the client module forautomated polling 107 can be loaded into memory 145 to cause one or moreprocessors such as processor 143 to perform the actions attributed tothe client module for automated polling 107. Device 103 may represent aclient computer that sends requests to one or more server computers andreceives results (e.g. responses to the sent client request). Device 103may also represent a computer in a peer-to-peer network. The clientdevice 103 may create a request and send the request to server device102. The request sent to the server device 102 can be a polling requestsuch as client polling request 109 and can include application-specificparameters created by the client device 103 and sent to the serverdevice 102 at each poll.

The server module for automated polling 106 can receive the pollingrequest 109 from the client device 103 and in response, the serverdevice 102 can create a polling response such as polling response 110and can return the polling response to the client device 103. Thepolling response created by the server device 102 may includeapplication-specific output values. The polling response may alsoinclude a “schedule next request after” value or parameter. Inaccordance with some aspects of the subject matter disclosed herein, the“schedule next request after” value may specify a particular time (e.g.,11:59:00) so that the client module for automated polling 107 candetermine the time (e.g., at 11:59:00 or thereafter) at which the nextpoll can be sent by the client device 103 to the server device 102. The“schedule next request after” value may specify a time span interval(e.g., 1 millisecond) after which the next poll can be sent (e.g., thenext poll can be sent one millisecond after the time at which theprevious poll was sent). The “schedule next request after” value mayalso specify an approximate or inexact interval or timespan instead ofan absolute value. For example, the server can return a next pollinginterval as “anytime between 6 seconds to 10 seconds” instead of anabsolute value of, for example, “8 seconds”. Alternatively the servercan change the polling interval at some interval selected by the server(e.g., every 5 minutes) instead of with every client polling request.

The client module for automated polling 107 can replace its previouspolling interval with the interval indicated by the “schedule nextrequest after” value received in the polling response received from theserver device 102. The “is request ignored” value can be a value thattells the client device 103 whether or not its previous polling requestwas ignored. The presence of an “is request ignored” field in the serverpolling response can indicate that the server ignored the previousclient polling request. Alternatively, the value included or containedwithin the “is request ignored” field may be a Boolean value thatindicates that the previous client polling request was ignored or aBoolean value that indicates that the previous client polling requestwas not ignored. If the server ignored the previous client pollingrequest, the application-specific output values might not have beenupdated by the server and/or might contain arbitrary or invalid responsedata.

Instead of sending the “schedule next request after” parameter as partof the server polling response, the “schedule next request after”parameter can be sent in a separate service or protocol for dynamicinterval adjustment. A dynamic polling interval for future pollingrequests can be calculated by the server module for automated polling106 using feedback control or the Bucket Reservation method describedherein. A feedback control system varies one or more variables toachieve a desired result. The feedback control system for a system asdescribed herein can vary polling intervals for each of its clients toachieve a desired server polling rate. A polling interval T for aparticular time t for a particular client or all clients can berepresented as T(t). A rate of polling requests can be represented byR(t) and the number of clients currently making requests can berepresented by N(t). T(t) (a polling interval for a client over time)can be calculated via the following formula:

$\mspace{79mu} {{R\text{?}} - \frac{N(t)}{T(t)}}$?indicates text missing or illegible when filed

The number of clients currently making requests N(t) can be anuncontrollable variable and can be unpredictable. For example, in someapplications client devices may have their own optimizations (e.g., idlestate detection) that affect whether a client polling request is made.In situations including this one, a control system can be modeled byhaving T(t) (client polling interval) as a feedback signal and R(t)(rate of polling requests) as output. The goal of the control system canthus be to adjust T(t) (client polling interval) so that R(t) (rate ofpolling requests) is as close to a desired refresh rate R_(d) regardlessof any changes in N(t) (number of clients currently making requests).The server module for automated polling can calculate T(t+1) (the nextpolling interval) so that R(t+1) (the next rate of polling requests) isas close to R_(d) as possible.

The calculation:

${T\left( {t + 1} \right)} = {{T(t)}\frac{R(t)}{R_{d}}}$

can be used to cause the next polling interval T(t +1) to increase inthe same proportion as the number of current polling requests R(t) hasincreased beyond the desired rate R_(d) or to decrease in the sameproportion as R(t) has decreased beyond the desired rate R_(d).

A filter can be applied to help to prevent spikes in usage request ratesthat could potentially overwhelm the server. Application of filters suchas but not limited to a low pass filter implemented using exponentialaveraging can result in a smoothened signal f_(ε) for a given inputsignal f(t) as can be obtained by the following equation:

f _(e)(t+1)=λf _(e)(t)+(λ−1)f(t)

0≦λ≦1 can be the smoothening factor. When λ approaches 1 the latestvalues have less significance compared to historical values and thussudden changes are dampened. An exponential averaging filter can beapplied to either T(t) (client polling interval) or to R(t) (rate ofpolling requests made on the server) or to both. When the exponentialaveraging filter is applied to both T(t) (client polling interval) andto R(t) (rate of polling requests) the feedback calculation becomes:

     T(t + 1) = ?(t) ⋅ ??indicates text missing or illegible when filed

with,

T _(e)(t+1)=λT _(e)(t)+(λ−1)T(T+1)

R _(e)(t)=ηR _(e)(t−1)+(η−1)R(t)

A new parameter k can be added to further dampen sudden changes. Withmore stringent exponential weights and damping factors such as but notlimited to λ=η=0.1 and k=0.5, sudden changes in R(t) do not exceedsudden changes in N(t), the system can take longer to converge in someconditions (e.g., such as but not limited to step and ramp inputs).

In addition to the ones described above, other standard filters can beapplied other than exponential moving average. For example, filtersbased on Recursive Least Square (RLS), other regression techniques orneural networks can be used to evaluate an estimate for R(t) or N(t) andT(t) can be accordingly recalculated.

The pseudo code 250 displayed in FIG. 2 a is one possible example basedon an implementation of an exponential moving averaging filter.

In accordance with aspects of the subject matter disclosed herein, anadaptive polling interval can also be implemented using a new algorithmthat is referred to as the Bucket Reservation Method herein. In thismethod a timeline is created, starting at t₀=0 with intervals t₁, t₂ andso on so that t_(n+1)=t_(n)+Δt where Δt is selected so that CΔt=R_(d)where C and Δt are some constants. That is, the timeline can bevisualized as a line that is divided into small constant intervals whereeach interval is a bucket that can be utilized by a client making apolling request.

The first client making a polling request can be assigned a bucket t₀.The second client making a polling request can be assigned the bucket t₁and so on, such that polling request k is assigned bucket t_(k) wherethe bucket to which the client is assigned tells the client when to sendthe next polling request. The server device 102 can keep track of thenext available bucket t_(n). When t_(n) is assigned to a client it isincremented by Δt so that each next calling client gets aclient-specific or client-independent bucket t_(k).

To clarify, suppose a website responds to polling requests for stockquotations. The website starts at 12:00 am. A desired total pollingrequest rate on the server is R_(d)=1 polling request per minuteirrespective of increases or decreases in actual polling rate to avoidunderutilization or overutilization of the server. A list of availablebuckets thus can include buckets for 12:01 am, 12:02 am and so on. Whena first client calls for a stock quote at 12:00:01 am, the firstavailable bucket, i.e., the bucket for 12:01 am can be assigned to itand the “schedule next request after” parameter can be set to 59 seconds(T=(12:01 am-12:00:01 am)=59 seconds. If the next (second) client callsin at 12:00:02 am the next bucket (the bucket for 12:02 am or T=118seconds (59*2) can be assigned to the second client and so on. The abovemethod maintains a refresh rate as close to R_(d) as possible regardlessof traffic patterns and without needing to measure actual refresh ratesor delays in filters described above.

When a value T is returned to a client, the client may not necessarilypoll the server again at the polling time sent to the client by theserver. That is, there is a probability ρ<1 that the bucket willactually be used. If the probability is assumed to be 100% (ρ=1) and itis not, efficiency might fall and the actual refresh rate can be lessthan the desired refresh rate. An ongoing count of unused buckets can bemaintained and the probability for unused buckets can be calculated.This count then can be used to perform multiple assignments to a singlebucket where the bucket receiving multiple assignments has the sameprobability to get used by multiple clients (instead of only one client)as the calculated probability.

FIG. 2 b illustrates an example of a method 200 for automated polling inaccordance with aspects of the subject matter disclosed herein as can bepracticed by a system such as the one described in FIG. 1. At 202 aclient device can send a client polling request to a server. Asdescribed above the client polling request can include input parametersspecified by the client. At 204 the server device can receive the clientpolling request. At 206 the server can generate a polling response withparticular application-specific output values. In addition to theparticular application-specific output values, the server pollingresponse can include a value that specifies how long the client is towait before sending the next polling request (a “schedule next requestafter” value), as described above. The “schedule next request after”value can be calculated via the feedback control mechanism or the BucketReservation Method described above. In accordance with aspects of thesubject matter disclosed herein, the feedback control mechanism can beimplemented by measuring the current rate of requests made on the serverand applying the above described filters on one or both of the pollinginterval and the rate of polling requests made on the server. The“schedule next request after” value can also be calculated via thebucket reservation mechanism described above. At 208 the server can sendthe server polling response and the new “schedule next request after”value to the client. As described above, in addition to the “schedulenext request after” value, the server may include an “is requestignored” value as described above.

At 210 the client can receive the server polling response. Optionally at212 the client can replace its previous polling interval as indicated bythe “schedule next request after” value. At 214 the client can send anext client polling request at or after the time as indicated by the“schedule next request after” value and processing can continue at 204.Alternatively, at 216 the client can send a new polling request to theserver prior to the time indicated by the “schedule next request after”value. At 218 in response to receiving the new polling request prior tothe time indicated in its previous response the server can create an “isrequest ignored” value indicating that other values in the serverpolling response may be invalid or not updated by the server. Processingcan continue at 202.

In accordance with other aspects of the subject matter disclosed herein,the “is request ignored” field can be generated and sent to the clientwith each server polling response and can include a Boolean value thatindicates that the server has ignored the previous client pollingrequest or can include a Boolean value that indicates that the serverhas not ignored the previous client polling request. The methoddescribed above enables dynamic updating of the current polling intervalto maximize system utilization by adjusting to changes in system trafficand can be employed to implement automatic load limiting.

FIG. 3 illustrates an example system 300 implementing the automatedpolling system in accordance with aspects of the subject matterdisclosed herein. System 300 can include multiple (n) devices 302 thatcan communicate via a communicative interface including but not limitedto a network such as network 306. A polling system such as the onedescribed herein can also be implemented without network environment orfull computers. For example, a hardware component can poll for readinessof another component by polling over a wire. Similarly, a polling systemcan also be implemented on a device such as but not limited to awireless computer mouse that polls for its base station over radiofrequencies, a digital photo frame, a desk lamp that polls ambient lightto adjust its brightness or color and so on. Network 306 can by any of avariety of different networks, including the Internet, a local areanetwork (LAN), a public telephone network, an intranet, or any otherpublic and/or proprietary network or combination thereof and so forth.Each device 302 can be any of a variety of different devices capable ofrunning (e.g., consuming) software. For example, a device 302 can be adesktop computer, a server computer, a mobile station, an entertainmentappliance, a set-top box communicatively coupled to a display device, awireless telephone, a personal digital assistant, a game console, anautomotive computer and so on. Thus devices 302 can range from fullresource devices with substantial memory and processor resources (e.g.,personal computers, game consoles) to low-resource devices with limitedmemory and/or processing resources (e.g., traditional set-top boxes,hand-held game consoles).

Moreover, a polling system such as the one described herein can be usedwithout a network environment or computers. For example, a hardwarecomponent can poll for readiness of another component by polling over awire. A wireless computer mouse can poll for its base station over radiofrequencies. Other examples include but are not limited to: a digitalphoto frame, a desk lamp that polls ambient light to adjust itsbrightness or color and so on.

In another embodiment, a system comprises a processor and a memory, anda module configured to cause the processor to repeatedly adapt rate ofpolling by a plurality of clients on a server based on currentutilization of the server by: calculating a next polling interval for aclient of the plurality of clients; and sending the calculated nextpolling interval to the client in a server polling response sent by theserver to the client.

In the system, the next polling interval for the client sent by theserver may be recalculated for each server polling response sent to theclient.

In the system, the next polling interval may be calculated by a bucketreservation mechanism in which a first request received by the serverfrom the plurality of clients is assigned a first bucket of a pluralityof buckets and a second request is assigned a second bucket of theplurality of buckets, wherein each bucket of the plurality of buckets isassociated with a time interval such that when the plurality of bucketsare fully utilized, a desired refresh rate is maintained regardless ofnumber of client requests received by the server.

In the system, the rate of polling may be dynamically adjusted for eachpolling request to tune the rate of polling of the server to currentoperating conditions of the server.

In the system, the server polling response may comprise a value thatindicates a client polling request was ignored by the server in responseto receiving a client request disregarding the calculated next pollinginterval for the client.

In the system, the calculated next polling interval for the client maybe calculated on the server based on a feedback control mechanism thatvaries polling intervals for each of the plurality of clients to achievea desired server polling rate.

In the system, a filter implemented using exponential averaging may beapplied to at least one of the next polling interval or a rate ofpolling requests made on the server.

In another embodiment, a method comprises: receiving by a server moduleexecuting on a server computer a request from a client executing on aclient computer; calculating a next polling interval for a plurality ofclients polling the server computer, to continuously adapt a rate ofpolling requests received on the server computer based on current serverutilization; and sending the next polling interval for a client of theplurality of clients to the client computer in a server pollingresponse.

The method may further comprise calculating the next polling intervalfor a client using a bucket reservation mechanism in which a firstrequest received on the server from the plurality of clients is assigneda first bucket and a second request from the plurality of clients isassigned a second bucket of a plurality of buckets, the plurality ofbuckets associated with a time interval such that when the plurality ofbuckets are fully utilized, a desired refresh rate is maintained.

The method may further comprise calculating the next polling intervalusing a feedback control mechanism in which polling interval is variedfor each of the plurality of clients to achieve a desired server pollingrate.

In the method, the next polling interval may be calculated by applyingan exponential averaging filter to a previous client polling interval.

In the method, the next polling interval may be calculated by applyingan exponential averaging filter to a rate of polling requests made onthe server.

In the method, the server polling response may include a value thatindicates a client polling request was ignored by the server computer inresponse to receiving a client request disregarding the calculated nextpolling interval for the client.

In the method, the next polling interval for the client sent by theserver may be recalculated for each server polling response sent to theclient.

In another embodiment, a computer-readable storage medium comprisescomputer-executable instructions which when executed cause at least oneprocessor to: continuously adapt rate of polling of a server based oncurrent utilization of the server by: calculating a next pollinginterval for a client of the plurality of clients; and sending thecalculated next polling interval to the client in a server pollingresponse sent by the server to the client.

The computer-readable storage medium may comprise furthercomputer-executable instructions, which when executed cause the at leastone processor to: calculate the next polling interval using a bucketreservation mechanism in which a first client of the plurality ofclients is assigned a first bucket of a plurality of buckets and asecond client of the plurality of clients is assigned a second bucket ofthe plurality of buckets, the plurality of buckets associated with aninterval of time such that when the plurality of buckets are fullyutilized, a desired refresh rate is maintained regardless of number ofthe plurality of clients making requests on the server.

The computer-readable storage medium may comprise furthercomputer-executable instructions, which when executed cause the at leastone processor to: calculate the next polling interval for the clientbased on a feedback control mechanism that varies polling intervals foreach of its clients to achieve a desired server polling rate.

The computer-readable storage medium may comprise furthercomputer-executable instructions, which when executed cause the at leastone processor to: calculate the next polling interval by applying afilter implemented using exponential averaging to at least one of thenext polling interval or a rate of polling requests made on the server.

The computer-readable storage medium may comprise furthercomputer-executable instructions, which when executed cause the at leastone processor to: indicate that a client polling request was ignored bythe server in response to the client disregarding the calculated nextpolling interval for the client.

The computer-readable storage medium may comprise furthercomputer-executable instructions, which when executed cause the at leastone processor to: tune the rate of polling to current server operatingconditions by dynamically adjusting the polling interval for eachpolling request received by the server.

Example of a Suitable Computing Environment

In order to provide context for various aspects of the subject matterdisclosed herein, FIG. 4 and the following discussion are intended toprovide a brief general description of a suitable computing environment510 in which various embodiments may be implemented. While the subjectmatter disclosed herein is described in the general context ofcomputer-executable instructions, such as program modules, executed byone or more computers or other computing devices, those skilled in theart will recognize that portions of the subject matter disclosed hereincan also be implemented in combination with other program modules and/ora combination of hardware and software. Generally, program modulesinclude routines, programs, objects, physical artifacts, datastructures, etc. that perform particular tasks or implement particulardata types. Typically, the functionality of the program modules may becombined or distributed as desired in various embodiments. The computingenvironment 510 is only one example of a suitable operating environmentand is not intended to limit the scope of use or functionality of thesubject matter disclosed herein.

With reference to FIG. 4, a computing device in the form of a computer512 is described, although it will be appreciated by those of skill inthe art that the subject matter disclosed herein can be implemented on ahardware chip that performs the functions described herein withoutneeding the main processor, memory and so on of the computer describedbelow. Computer 512 may include a processing unit 514, a system memory516, and a system bus 518. The processing unit 514 can be any of variousavailable processors. Dual microprocessors and other multiprocessorarchitectures also can be employed as the processing unit 514. Thesystem memory 516 may include volatile memory 520 and nonvolatile memory522. Nonvolatile memory 522 can include read only memory (ROM),programmable ROM (PROM), electrically programmable ROM (EPROM) or flashmemory. Volatile memory 520 may include random access memory (RAM) whichmay act as external cache memory. The system bus 518 couples systemphysical artifacts including the system memory 516 to the processingunit 514. The system bus 518 can be any of several types including amemory bus, memory controller, peripheral bus, external bus, or localbus and may use any variety of available bus architectures.

Computer 512 typically includes a variety of computer readable mediasuch as volatile and nonvolatile media, removable and non-removablemedia. Computer storage media may be implemented in any method ortechnology for storage of information such as computer readableinstructions, data structures, program modules or other data. Computerstorage media includes, but is not limited to, RAM, ROM, EEPROM, flashmemory or other memory technology, CDROM, digital versatile disks (DVD)or other optical disk storage, magnetic cassettes, magnetic tape,magnetic disk storage or other magnetic storage devices, or any othertransitory or non-transitory medium which can be used to store thedesired information and which can be accessed by computer 512.

It will be appreciated that FIG. 4 describes software that can act as anintermediary between users and computer resources. This software mayinclude an operating system 528 which can be stored on disk storage 524,and which can control and allocate resources of the computer system 512.Disk storage 524 may be a hard disk drive connected to the system bus518 through a non-removable memory interface such as interface 526.System applications 530 take advantage of the management of resources byoperating system 528 through program modules 532 and program data 534stored either in system memory 516 or on disk storage 524. It will beappreciated that computers can be implemented with various operatingsystems or combinations of operating systems.

A user can enter commands or information into the computer 512 throughan input device(s) 536. Input devices 536 include but are not limited toa pointing device such as a mouse, trackball, stylus, touch pad,keyboard, microphone, and the like. These and other input devicesconnect to the processing unit 514 through the system bus 518 viainterface port(s) 538. An interface port(s) 538 may represent a serialport, parallel port, universal serial bus (USB) and the like. Outputdevices(s) 540 may use the same type of ports as do the input devices.Output adapter 542 is provided to illustrate that there are some outputdevices 540 like monitors, speakers and printers that require particularadapters. Output adapters 542 include but are not limited to video andsound cards that provide a connection between the output device 540 andthe system bus 518. Other devices and/or systems or devices such asremote computer(s) 544 may provide both input and output capabilities.

Computer 512 can operate in a networked environment using logicalconnections to one or more remote computers, such as a remotecomputer(s) 544. The remote computer 544 can be a personal computer, aserver, a router, a network PC, a peer device or other common networknode, and typically includes many or all of the elements described aboverelative to the computer 512, although only a memory storage device 546has been illustrated in FIG. 4. Remote computer(s) 544 can be logicallyconnected via communication connection 550. Network interface 548encompasses communication networks such as local area networks (LANs)and wide area networks (WANs) but may also include other networks.Communication connection(s) 550 refers to the hardware/software employedto connect the network interface 548 to the bus 518. Connection 550 maybe internal to or external to computer 512 and include internal andexternal technologies such as modems (telephone, cable, DSL andwireless) and ISDN adapters, Ethernet cards and so on.

It will be appreciated that the network connections shown are examplesonly and other means of establishing a communications link between thecomputers may be used. One of ordinary skill in the art can appreciatethat a computer 512 or other client device can be deployed as part of acomputer network. In this regard, the subject matter disclosed hereinmay pertain to any computer system having any number of memory orstorage units, and any number of applications and processes occurringacross any number of storage units or volumes. Aspects of the subjectmatter disclosed herein may apply to an environment with servercomputers and client computers deployed in a network environment, havingremote or local storage. Aspects of the subject matter disclosed hereinmay also apply to a standalone computing device, having programminglanguage functionality, interpretation and execution capabilities.

The various techniques described herein may be implemented in connectionwith hardware or software or, where appropriate, with a combination ofboth. Thus, the methods and apparatus described herein, or certainaspects or portions thereof, may take the form of program code (i.e.,instructions) embodied in tangible media, such as floppy diskettes,CD-ROMs, hard drives, or any other machine-readable storage medium,wherein, when the program code is loaded into and executed by a machine,such as a computer, the machine becomes an apparatus for practicingaspects of the subject matter disclosed herein. In the case of programcode execution on programmable computers, the computing device willgenerally include a processor, a storage medium readable by theprocessor (including volatile and non-volatile memory and/or storageelements), at least one input device, and at least one output device.One or more programs that may utilize the creation and/or implementationof domain-specific programming models aspects, e.g., through the use ofa data processing API or the like, may be implemented in a high levelprocedural or object oriented programming language to communicate with acomputer system. However, the program(s) can be implemented in assemblyor machine language, if desired. In any case, the language may be acompiled or interpreted language, and combined with hardwareimplementations.

While the subject matter disclosed herein has been described inconnection with the figures, it is to be understood that modificationsmay be made to perform the same functions in different ways.

What is claimed:
 1. A system, comprising: a processor and a memory; anda module executed by the processor that is configured to cause theprocessor to repeatedly adapt rate of polling by a plurality of clientson a server, the module configured to calculate a next polling intervalfor a client of the plurality of clients using a feedback controlmechanism in which a polling interval is varied for each of theplurality of clients to achieve a desired server polling rate; and thecalculated next polling interval is transmitted to the client in aserver polling response.
 2. The system of claim 1, wherein a filterimplemented using exponential averaging is applied to at least one ofthe next polling interval or a rate of polling requests made on theserver.
 3. The system of claim 2, wherein the filter is configured toadapt a smoothing factor to dampen sudden changes in the next pollinginterval.
 4. The system of claim 2, wherein the filter is configured toadapt a second smoothing factor to further dampen sudden changes in thenext polling interval.
 5. The system of claim 1, wherein a filter isapplied to at least one of the next polling interval or a rate ofpolling requests made on the server, the filter implemented using atleast one of recursive least square (RLS), a regression technique, or aneural network.
 6. The system of claim 1, wherein the rate of polling isdynamically adjusted for each polling request to tune the rate ofpolling of the server to current operating conditions of the server. 7.The system of claim 1, wherein the server polling response comprises avalue that indicates a client polling request was ignored by the serverin response to receiving a client request disregarding the calculatednext polling interval for the client.
 8. A method comprising: receivingby a server module executing on a server computer a request from aclient executing on a client computer; calculating a next pollinginterval for a plurality of clients polling the server computer tocontinuously adapt a rate of polling requests received by the servercomputer, wherein said calculating comprises calculating the nextpolling interval using a feedback control mechanism in which a pollinginterval is varied for each of the plurality of clients to achieve adesired server polling rate; and sending the next polling interval forthe client to the client computer in a server polling response.
 9. Themethod of claim 8, wherein said calculating comprises: calculating thenext polling interval by applying an exponential averaging filter to aprevious client polling interval.
 10. The method of claim 8, whereinsaid calculating comprises: calculating the next polling interval byapplying an exponential averaging filter to a rate of polling requestsmade on the server.
 11. The method of claim 10, wherein said calculatingthe next polling interval by applying an exponential averaging filter toa rate of polling requests made on the server comprises: adapting asmoothing factor of the exponential averaging filter to dampen suddenchanges in the next polling interval.
 12. The method of claim 11,wherein said calculating the next polling interval by applying anexponential averaging filter to a rate of polling requests made on theserver further comprises: adapting a second smoothing factor of theexponential averaging filter to further dampen sudden changes in thenext polling interval.
 13. The method of claim 8, wherein saidcalculating comprises: calculating the next polling interval by applyinga filter that implements at least one of recursive least square (RLS), aregression technique, or a neural network.
 14. The method of claim 8,wherein the server polling response comprises a value that indicates aclient polling request was ignored by the server computer in response toreceiving a client request disregarding the calculated next pollinginterval for the client.
 15. A computer-readable storage mediumcomprising computer-executable instructions which when executed cause atleast one processor to perform tasks comprising: continuously adapt rateof polling of a server based on current utilization of the server bycalculating a next polling interval for a client of the plurality ofclients using a feedback control mechanism configured to adjust acurrent rate of polling requests to achieve a desired rate of pollingrequests according to a change in a number of the plurality of clientsmaking polling requests; sending the calculated next polling interval tothe client in a server polling response sent by the server to theclient.
 16. The computer-readable storage medium of claim 15, comprisingfurther computer-executable instructions, which when executed cause theat least one processor to perform further tasks comprising: calculatingthe next polling interval by applying an exponential averaging filter toa previous client polling interval.
 17. The computer-readable storagemedium of claim 15, comprising further computer-executable instructions,which when executed cause the at least one processor to perform furthertasks comprising: calculating the next polling interval by applying anexponential averaging filter to a rate of polling requests made on theserver.
 18. The computer-readable storage medium of claim 17, comprisingfurther computer-executable instructions, which when executed cause theat least one processor to perform further tasks comprising: adapting asmoothing factor of the exponential averaging filter to dampen suddenchanges in the next polling interval.
 19. The computer-readable storagemedium of claim 18, comprising further computer-executable instructions,which when executed cause the at least one processor to perform furthertasks comprising: adapting a second smoothing factor of the exponentialaveraging filter to further dampen sudden changes in the next pollinginterval.
 20. The computer-readable storage medium of claim 15,comprising further computer-executable instructions, which when executedcause the at least one processor to perform further tasks comprising:calculating the next polling interval by applying a filter thatimplements at least one of recursive least square (RLS), a regressiontechnique, or a neural network.